Spanish
Crear y configurar stack de tráfico externo privado (Opcional)
Esta guía asume que un router OpenWrt está siendo usado. Los routers OpenWrt tienen la posibilidad the configurar la VPN local directamente desde el router. Esto es mejor, ya que no solo aligerará la carga del servidor, también significa que en caso de que el servidor se cayera, la VPN seguiría sirviendo y permitiría conectar al servidor para diagnosticar el problema. Si no cuenta con un router con capacidad de VPN, puede seguir esta sección para ejecutar la VPN desde el servidor. Si cuenta con un router OpenWrt, entonces puede mejor seguir esta guía: https://openwrt.org/docs/ guide-user/services/vpn/wireguard/server#luci_web_interface_instructions
NOTA
Si sigue esa guía, puede usar 10.13.13.1/24 como la subred en vez de 10.0.0.1/24 como la guía recomienda para que coincida con esta guía. También, mientras configura los Wireguard Peers, es recomendable que use un CIDR de un solo IP (e.g. 10.13.13.2/32 en vez de 10.0.0.10/24 como la guía sugiere) en Allowed IPs para que el par sea asignado la misma IP todas las veces. La guía también usa el valor por defecto de 0.0.0.0/0 para Allowed IPs durante la generación de la configuración del par. Si prefiere tener "split tunneling" como esta guía, elimine los valores por defecto y en su lugar agregue 192.168.1.0/24 (use la subred de su LAN si es diferente) y 10.13.13.0/24. No olvide también cambiar el endpoint a wg.micasa.duckdns.org cuando genere la configuración.
Configuraremos el stack de Docker de tráfico privado; configuraremos el cortafuegos para permitir el puerto necesario; y levantaremos el stack a través de Arcane. Haremos Port Forwarding del puerto 51820 para WireGuard. Finalmente, configuraremos los clientes que se van a conectar a ella. Esto se puede hacer de 2 formas: a través de un código QR o a través de un archivo .conf. Una vez conectados a esta VPN, podremos acceder a servicios que no expusimos públicamente con nuestro Reverse Proxy como Arcane y Cockpit, los cuales son demasiado críticos como para exponer a ataques en la internet pública. El stack consiste del siguiente contenedor:
- WireGuard: VPN para la red local.
NOTA
WireGuard será configurado con "split tunneling". Si usted desea redireccionar todo el tráfico del cliente, entonces debe cambiar la variable ALLOWEDIPS en el stack en Arcane a 0.0.0.0/0.
Pasos
- Ejecutar:
./scripts/create_wireguard_folder.shpara generar el directorio del contenedor en el SSD. - Ejecutar:
./scripts/iptable_setup.sh. Agrega un módulo de kernel al inicio del sistema necesario para WireGuard. - Editar el archivo del stack:
nano ./files/private-traffic-stack.yml. - Reemplazar
TZ=America/New_Yorkpor el huso horario de su sistema. Puede usar esta lista como referencia: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - Reemplazar las XXX con el
uidygiddel usuariomediacenter. Se puede usarid mediacenterpara obtener eluidygid. - Reemplazar
myhomepor el subdominio que registró en DuckDNS.org y ajustar la variableALLOWEDIPSen caso de que192.168.1.0/24no sea el rango CIDR de su red local. No remover10.13.13.0ya que es la red interna de WireGuard y perderá conectividad si la remueve. Si asignó un IP diferente a su DNS (por ejemplo si usó Technitium), ajustar la variablePEERDNScon la IP correcta. No remover10.13.13.1ya que es el DNS interno de WireGuard y no va a funcionar. La guía asume 2 clientes que se conectaran a la VPN con los IDs:phoneylaptop. Si usted requiere más o menos clientes, agregar o remover o renombrar los IDs de los clientes que desee. - Copiar todo el contenido del archivo al portapapeles. Guardar y salir con
Ctrl + X, Y, Enter. - Ejecutar:
./scripts/wireguard_firewalld_services.sh. Configura Firewalld para WireGuard. El script abre el puerto para WireGuard. - Agregar stack en Arcane desde el navegador.
- Acceder a Arcane a través de https://arcane.micasa.duckdns.org.
- Darle clic en "Projects" en el menú izquierdo y crear un nuevo proyecto.
- Ponerle nombre "private-traffic" y pegar el contenido del private-traffic-stack.yml que copió al portapapeles y crear el stack. Desde ahora modificaciones al stack se deben de hacer a través de Arcane y no en el archivo.
- Configurar el router. Cada router es diferente, así que tendrá que consultar su manual para poder hacer el paso siguiente.
- Redireccionar el puerto (Port Forwarding) 51820 en UDP al servidor.
- Si se desea configurar con código QR hacer lo siguiente:
- Acceder a Arcane en su red local desde un dispositivo que no es el cliente que va a configurar.
- Navegar a
Containers. - Hacer clic al contenedor
wireguarde ir a la pestañashell. - Mostrar el código QR para el cliente
phoneen la consola con:/app/show-peer phone. - Desde el dispositivo que va a ser el cliente
phone(su celular por ejemplo), abrir la aplicación de WireGuard y seleccionarAgregar túnel. - Elegir
Escanear código QRy escanear el código que se desplegó en la consola. - Si desea probar que funciona correctamente, desconectar su dispositivo de la red local (apagar el Wifi por ejemplo) y habilitar la VPN. Intentar acceder a una IP de su red local.
- Si se desea configurar con archivo de configuración hacer lo siguiente (Nota: la guía asume un dispositivo Linux que ya tiene instalado el paquete
wireguard-toolso equivalente. Para otro SO, favor de leer la documentación de WireGuard):- Conectar al servidor desde el dispositivo que va a ser el cliente con SSH:
ssh admin@server.lan. - Mostramos la configuración para el cliente
laptop:sudo cat /Apps/wireguard/peer_laptop/peer_laptop.conf. - Copiar el contenido del archivo al portapapeles.
- Regresar a la consola del dispositivo cliente con
exito abrir una nueva consola. - Creamos el archivo de configuración para una red virtual con nombre
wg0:sudo nano /etc/wireguard/wg0.conf. - Pegar el contenido del portapapeles. Guardar y salir con
Ctrl + X, Y, Enter. - Si desea probar que funciona correctamente, desconectar su dispositivo de la red local (conectarse a su red Wifi de invitado o desde la red pública de un café o use su celular como módem) y habilitar la red virtual
wg0con:wg-quick up wg0. Intentar acceder a una IP de su red local.
- Conectar al servidor desde el dispositivo que va a ser el cliente con SSH: